/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package listings;

import classes.AdminDB;
import classes.product;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import listings.listSearchProducts;

/**
 *
 * @author Alvaro
 */
public class searchIndex extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException, ClassNotFoundException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            HttpSession s = request.getSession();
            //Parametros del formulario, que nos permitira buscar bajo alguna condicion
            String by=request.getParameter("by");        
            
            AdminDB adb = new AdminDB();
            product p = new product();
            //Creacion de la lista que se metera en la sesion con os datos
            List<product> productos = null;
            
            
            //Queremos los productos mas baratos
            if(by.equals("Cheapest"))
            {
                System.out.println("Mostramos los Cheapest!");
                //Metemos en la lista los resultados. El 1 indica el CASE de la funcion
                productos = p.showSomeProducts(adb.getConnection(),1);
              
                System.out.println("Hemos llegado al server para buscar por: "+by);
                //Metemos la lista en la sesion
                s.setAttribute("show", productos);
            }
            //Queremos los productos mas caros
            if(by.equals("Most expensive"))
            {
                System.out.println("Mostramos los Most expensives!");
                productos = p.showSomeProducts(adb.getConnection(),2);
              
                System.out.println("Hemos llegado al server para buscar por: "+by);
                s.setAttribute("show", productos);
            }
            //Queremos los productos mas vendidos
            if(by.equals("Bestsellers"))
            {
                System.out.println("Mostramos los Bestsellers!");
                productos = p.showSomeProducts(adb.getConnection(),3);
              
                System.out.println("Hemos llegado al server para buscar por: "+by);
                s.setAttribute("show", productos);
            }
            //Queremos los coches del 2012
            if(by.equals("2012"))
            {
                System.out.println("Mostramos los Cars del 2012!");
                productos = p.showSomeProducts(adb.getConnection(),4);
              
                System.out.println("Hemos llegado al server para buscar por: "+by);
                s.setAttribute("show", productos);
            }
            //Queremos los coches del 2011
            if(by.equals("2011"))
            {
                System.out.println("Mostramos los Cars del 2011!");
                productos = p.showSomeProducts(adb.getConnection(),5);
              
                System.out.println("Hemos llegado al server para buscar por: "+by);
                s.setAttribute("show", productos);
            }
            //Queremos los coches del 2010
            if(by.equals("2010"))
            {
                System.out.println("Mostramos los Cars del 2010!");
                productos = p.showSomeProducts(adb.getConnection(),6);
              
                System.out.println("Hemos llegado al server para buscar por: "+by);
                s.setAttribute("show", productos);
            }
            //Queremos los coches del 2009
            if(by.equals("2009"))
            {
                System.out.println("Mostramos los Cars del 2009!");
                productos = p.showSomeProducts(adb.getConnection(),7);
              
                System.out.println("Hemos llegado al server para buscar por: "+by);
                s.setAttribute("show", productos);
            }
            

                


            //Redireccion
            response.sendRedirect("index.jsp");
            
        } finally {            
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            try {
                processRequest(request, response);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(searchIndex.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (SQLException ex) {
            Logger.getLogger(listSearchProducts.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            try {
                processRequest(request, response);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(searchIndex.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (SQLException ex) {
            Logger.getLogger(listSearchProducts.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
